#include <iostream>
using namespace std;

/*
    函数重载（函数多态）：
            C++允许在同一个程序中定义多个名字相同，参数类型个数有差别的函数
            函数名相同，参数列表有差别，返回值类型无关
                                    （即int add(int a,int b)和void add(int a,int b)不算函数重载）
    函数重载的实现原理：
            编译器会根据参数的类型和个数来匹配最合适的函数
    参数类型的兼容性：
            add(double a,double b);
            int c,d;
            使用add(c,d);则会去使用add(double a,double b)这个次优解
            但是如果存在add(double a,double b);和add(float a,float b);则会出现错误

*/
// 求各种图形的面积

// 圆形
double  getarea(double r)
{
    return r*r*3.14;   
}

//三角形
double  getarea(float b,float h)
{
    return b*h*0.5;
}

// 矩形
double  getarea(double l,double w)
{
    return l*w;
}


int main() 
{
    cout << "输入圆的半径：";
    double r;
    cin >> r;
    cout << "圆的面积为：" << getarea(r) << endl;
    cout << "输入三角形的底边和高：";
    float b,h;
    cin >> b >> h;
    cout << "三角形的面积为：" << getarea(b,h) << endl;
    cout << "输入矩形的长和宽：";
    double l,w;
    cin >> l >> w;
    cout << "矩形的面积为：" << getarea(l,w) << endl;


    return 0;
}